package br.com.vti.sisp_sicrim.antigo.controller.relatorios;

import java.io.FileNotFoundException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Calendar;

import net.sf.jasperreports.engine.JRException;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.interceptor.download.InputStreamDownload;
import br.com.vti.sisp_sicrim.antigo.model.SicCadastro;
import br.com.vti.sisp_sicrim.antigo.util.Relatorios;
import br.com.vti.sisp_sicrim.antigo.util.Sessao;
import br.com.vti.sisp_sicrim.antigo.util.UtilBean;

/**
 * Classe responsavel por encapsular o tratamento e as consistencias da tela Scrpr001Report
 * 
 * @author Incode - Data: mai/2014
 * 
 */
public class Scrpr001Report {
	private String nomeClasse;
	private String[] jObservacoez = new String[151];
	private String sinituser;
	private int dataCorrente;
	private int pg;
	private String texto1;
	private String texto2;
	private String texto3;
	private String id;
	private String im;
	private String ia;
	private String nomeI;
	private String nomeR;
	private String fdc;
	private String dd;
	private String mm;
	private String aaaa;
	private Long registroEstadualGeral; // DB
	private String apelidoAlcunhas; // DB
	private String nomeMae; // DB
	private String naturalidade; // DB
	public String aaaammdd;
	public String nome;
	public String idma;
	private String horaCorrente;
	private Result result;
	private Sessao sessao;
	private Relatorios report;
	// Classes views
	SicCadastro criminalView = new SicCadastro(); // Classes includes

	public Scrpr001Report() throws JRException {
		inicializar();
	}

	public Scrpr001Report(Sessao sessao) throws JRException {
		this.sessao = sessao;
		inicializar();
	}

	public void inicializar() throws JRException {
		report = new Relatorios();
		Arrays.fill(jObservacoez, "");
		dataCorrente = 0;
		pg = 0;
		texto1 = "";
		texto2 = "";
		texto3 = "";
		fdc = "";
		nomeClasse = this.getClass().getSimpleName(); // *PROGRAM
		sinituser = UtilBean.getInitUser(); // *INIT-USER
		horaCorrente = new SimpleDateFormat("HH:mm:ss").format(Calendar.getInstance().getTime()); // *TIMX
		report.setNumeroRel(1, "D");
		{
			report.setNumeroLinhaRel(1, 3);
			{
				report.adicionaCampo(1, 37, "lit_1_37", "C", "", "*** GOVERNO DO ESTADO DO MARANHAO    ");
				report.adicionaCampo(18, 12, "lit_18_12", "C", "", "DT. EMISSAO:");
				report.adicionaCampo(31, 8, "dataCorrente", "N", "99/99/9999", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(2, 3);
			{
				report.adicionaCampo(1, 55, "lit_1_55", "C", "", "*** SECRETARIA DE ESTADO DA SEGURANCA PUBLICA - SSP    ");
				report.adicionaCampo(57, 11, "lit_57_11", "C", "", "HR EMISSAO:");
				report.adicionaCampo(69, 8, "horaCorrente", "S", "", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(3, 3);
			{
				report.adicionaCampo(1, 58, "lit_1_58", "C", "", "*** POLICIA CIVIL / INSTITUTO DE IDENTIFICACAO DO MARANHAO");
				report.adicionaCampo(60, 8, "lit_60_8", "C", "", "        ");
				report.adicionaCampo(69, 8, "lit_69_8", "C", "", "SCRPR001");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(4, 2);
			{
				report.adicionaCampo(1, 17, "lit_1_17", "C", "", "*** IMPRESSO POR:");
				report.adicionaCampo(19, 8, "sinituser", "S", "", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(5, 4);
			{
				report.adicionaCampo(1, 50, "lit_1_50", "C", "", "*** FOLHA DE ANTECEDENTES CRIMINAIS - REGISTRO N.:");
				report.adicionaCampo(52, 13, "Registroestadualgeral", "N", "ZZZZZZ99999", "");
				report.adicionaCampo(8, 4, "lit_8_4", "C", "", "PAG:");
				report.adicionaCampo(13, 2, "Pg", "N", "ZZZZZZ99999", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(7, 1);
			{
				report.adicionaCampo(1, 77, "Texto1", "X", "", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(8, 1);
			{
				report.adicionaCampo(1, 77, "Texto2", "X", "", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(10, 8);
			{
				report.adicionaCampo(1, 24, "lit_1_24", "C", "", "EM ATENCAO AO SEU OFICIO");
				report.adicionaCampo(26, 23, "Texto3", "X", "", "");
				report.adicionaCampo(50, 12, "lit_50_12", "C", "", ", DATADO DE ");
				report.adicionaCampo(63, 2, "Id", "N", "99", "");
				report.adicionaCampo(66, 1, "lit_66_1", "C", "", "/");
				report.adicionaCampo(68, 2, "Im", "N", "9999", "");
				report.adicionaCampo(71, 1, "lit_71_1", "C", "", "/");
				report.adicionaCampo(73, 4, "Ia", "N", "99", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(11, 2);
			{
				report.adicionaCampo(1, 32, "lit_1_32", "C", "", "INFORMAMOS QUE O(A) INDICIADO(A)");
				report.adicionaCampo(34, 47, "NomeI", "X", "", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(12, 3);
			{
				report.adicionaCampo(1, 13, "NomeR", "X", "", "");
				report.adicionaCampo(15, 7, "lit_15_7", "C", "", ", VULGO");
				report.adicionaCampo(23, 30, "Apelidoalcunhas", "X", "", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(13, 2);
			{
				report.adicionaCampo(1, 4, "lit_1_4", "C", "", "F.D:");
				report.adicionaCampo(6, 70, "Fdc", "X", "", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(14, 2);
			{
				report.adicionaCampo(1, 11, "lit_1_11", "C", "", "FILHO(A) DE");
				report.adicionaCampo(13, 60, "Nomemae", "X", "", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(15, 8);
			{
				report.adicionaCampo(1, 16, "lit_1_16", "C", "", "DT. NASCIMENTO: ");
				report.adicionaCampo(18, 2, "Dd", "N", "99", "");
				report.adicionaCampo(21, 1, "lit_21_1", "C", "", "/");
				report.adicionaCampo(23, 2, "Mm", "N", "99", "");
				report.adicionaCampo(26, 1, "lit_26_1", "C", "", "/");
				report.adicionaCampo(28, 4, "Aaaa", "N", "99", "");
				report.adicionaCampo(33, 11, "lit_33_11", "C", "", "NATURAL DE ");
				report.adicionaCampo(45, 35, "Naturalidade", "X", "", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(16, 1);
			{
				report.adicionaCampo(1, 69, "lit_1_69", "C", "", "CONSTA NO REGISTRO CRIMINAL DESTE INSTITUTO AS SEGUINTES OCORRENCIAS:");
				report.setFimLinhaRel();
			}
		}
		report.setNumeroRel(2, "D");
		{
			report.setNumeroLinhaRel(1, 2);
			{
				report.adicionaCampo(1, 17, "lit_1_17", "C", "", "*** IMPRESSO POR:");
				report.adicionaCampo(19, 8, "sinituser", "S", "", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(2, 4);
			{
				report.adicionaCampo(1, 50, "lit_1_50", "C", "", "*** FOLHA DE ANTECEDENTES CRIMINAIS - REGISTRO N.:");
				report.adicionaCampo(52, 13, "Registroestadualgeral", "N", "ZZZZZZ99999", "");
				report.adicionaCampo(8, 4, "lit_8_4", "C", "", "PAG:");
				report.adicionaCampo(13, 2, "Pg", "N", "ZZZZZZ99999", "");
				report.setFimLinhaRel();
			}
		}
		report.setNumeroRel(3, "D");
		{
			report.setNumeroLinhaRel(1, 1);
			{
				report.adicionaCampo(1, 77, "Jobservacoez", "X", "", "");
				report.setFimLinhaRel();
			}
		}
		report.setNumeroRel(4, "D");
		{
			report.setNumeroLinhaRel(2, 1);
			{
				report.adicionaCampo(1, 15, "lit_1_15", "C", "", "ATENCIOSAMENTE,");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(7, 1);
			{
				report.adicionaCampo(1, 40, "lit_1_40", "C", "", "SAO LUIS, _____ DE ________ DE ________ ");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(12, 2);
			{
				report.adicionaCampo(1, 36, "lit_1_36", "C", "", "___________________________________ ");
				report.adicionaCampo(5, 36, "lit_5_36", "C", "", "___________________________________ ");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(13, 2);
			{
				report.adicionaCampo(3, 38, "lit_3_38", "C", "", " DIR. DO INSTITUTO DE IDENTIFICACAO   ");
				report.adicionaCampo(5, 37, "lit_5_37", "C", "", "      ENC. DA DIVISAO CRIMINAL       ");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(15, 1);
			{
				report.adicionaCampo(20, 45, "lit_20_45", "C", "", "POLICIA CIVIL 200 ANOS EM DEFESA DA SOCIEDADE");
				report.setFimLinhaRel();
			}
		}
	}

	public boolean validar() {
		// validar os campos recebidos da tela
		return true;
	}

	public String[] getJobservacoez() {
		return jObservacoez;
	}

	public void setJobservacoez(String[] jObservacoez) throws ParseException {
		this.jObservacoez = jObservacoez;
		report.adicionaValorReport("Jobservacoez", jObservacoez);
	}

	public void setJobservacoez(String jObservacoez) throws ParseException {
		// this.jObservacoez = jObservacoez;
		report.adicionaValorReport("Jobservacoez", jObservacoez);
	}

	public int getDataCorrente() {
		return dataCorrente;
	}

	public void setDataCorrente(int dataCorrente) throws ParseException {
		this.dataCorrente = dataCorrente;
		report.adicionaValorReport("dataCorrente", dataCorrente);
	}

	public int getPg() {
		return pg;
	}

	public void setPg(int pg) throws ParseException {
		this.pg = pg;
		report.adicionaValorReport("Pg", pg);
	}

	public String getTexto1() {
		return texto1;
	}

	public void setTexto1(String texto1) throws ParseException {
		this.texto1 = texto1;
		report.adicionaValorReport("Texto1", texto1);
	}

	public String getTexto2() {
		return texto2;
	}

	public void setTexto2(String texto2) throws ParseException {
		this.texto2 = texto2;
		report.adicionaValorReport("Texto2", texto2);
	}

	public String getTexto3() {
		return texto3;
	}

	public void setTexto3(String texto3) throws ParseException {
		this.texto3 = texto3;
		report.adicionaValorReport("Texto3", texto3);
	}

	public String getId() {
		return id;
	}

	public void setId(String id) throws ParseException {
		this.id = id;
		report.adicionaValorReport("Id", id);
	}

	public String getIm() {
		return im;
	}

	public void setIm(String im) throws ParseException {
		this.im = im;
		report.adicionaValorReport("Im", im);
	}

	public String getIa() {
		return ia;
	}

	public void setIa(String ia) throws ParseException {
		this.ia = ia;
		report.adicionaValorReport("Ia", ia);
	}

	public String getNomeI() {
		return nomeI;
	}

	public void setNomeI(String nomeI) throws ParseException {
		this.nomeI = nomeI;
		report.adicionaValorReport("NomeI", nomeI);
	}

	public String getNomeR() {
		return nomeR;
	}

	public void setNomeR(String nomeR) throws ParseException {
		this.nomeR = nomeR;
		report.adicionaValorReport("NomeR", nomeR);
	}

	public String getFdc() {
		return fdc;
	}

	public void setFdc(String fdc) throws ParseException {
		this.fdc = fdc;
		report.adicionaValorReport("Fdc", fdc);
	}

	public String getDd() {
		return dd;
	}

	public void setDd(String dd) throws ParseException {
		this.dd = dd;
		report.adicionaValorReport("Dd", dd);
	}

	public String getMm() {
		return mm;
	}

	public void setMm(String mm) throws ParseException {
		this.mm = mm;
		report.adicionaValorReport("Mm", mm);
	}

	public String getAaaa() {
		return aaaa;
	}

	public void setAaaa(String aaaa) throws ParseException {
		this.aaaa = aaaa;
		report.adicionaValorReport("Aaaa", aaaa);
	} // /

	public String getAaaammdd() {
		return this.aaaa + this.mm + this.dd;
	}

	public void setAaaammdd(String aaaammdd) throws ParseException {
		this.aaaammdd = aaaammdd;
		this.aaaa = UtilBean.subStr(aaaammdd, 0, 4);
		report.adicionaValorReport("Aaaa", UtilBean.subStr(aaaammdd, 0, 4));
		this.mm = UtilBean.subStr(aaaammdd, 4, 2);
		report.adicionaValorReport("Mm", UtilBean.subStr(aaaammdd, 4, 2));
		this.dd = UtilBean.subStr(aaaammdd, 6, 2);
		report.adicionaValorReport("Dd", UtilBean.subStr(aaaammdd, 6, 2));
	} // /

	public String getNome() {
		return this.nomeI + this.nomeR;
	}

	public void setNome(String nome) throws ParseException {
		this.nome = nome;
		this.nomeI = UtilBean.subStr(nome, 0, 47);
		report.adicionaValorReport("NomeI", UtilBean.subStr(nome, 0, 47));
		this.nomeR = UtilBean.subStr(nome, 47, 13);
		report.adicionaValorReport("NomeR", UtilBean.subStr(nome, 47, 13));
	} // /

	public String getIdma() {
		return this.id + this.im + this.ia;
	}

	public void setIdma(String idma) throws ParseException {
		this.idma = idma;
		this.id = UtilBean.subStr(idma, 0, 2);
		report.adicionaValorReport("Id", UtilBean.subStr(idma, 0, 2));
		this.im = UtilBean.subStr(idma, 2, 2);
		report.adicionaValorReport("Im", UtilBean.subStr(idma, 2, 2));
		this.ia = UtilBean.subStr(idma, 4, 4);
		report.adicionaValorReport("Ia", UtilBean.subStr(idma, 4, 4));
	}

	public String getNomeClasse() {
		return nomeClasse;
	}

	public void setNomeClasse(String nomeClasse) throws ParseException {
		this.nomeClasse = nomeClasse;
		report.adicionaValorReport("nomeClasse", nomeClasse);
	}

	public String getSinituser() {
		return sinituser;
	}

	public void setSinituser(String sinituser) throws ParseException {
		this.sinituser = sinituser;
		report.adicionaValorReport("Sinituser", sinituser);
	}

	public String getHoraCorrente() {
		return horaCorrente;
	}

	public void setHoraCorrente(String horaCorrente) throws ParseException {
		this.horaCorrente = horaCorrente;
		report.adicionaValorReport("horaCorrente", horaCorrente);
	}

	public void setPageSize(int pagesize) throws JRException {
		report.setPageSize(pagesize);
	}

	public void setLineSize(int linesize) {
		report.setLineSize(linesize);
	}

	public int getPageSize() {
		return report.getPageSize();
	}

	public int getPageLine() {
		return report.getPageLine();
	}

	public void saltaLinhas(int qtdLinhas) throws ParseException, JRException {
		report.saltaLinhas(qtdLinhas);
	}

	public void gravaRelatorio(int nroRel) throws ParseException, JRException {
		setPg(report.getPageNumber());
		report.gravaRelatorio(report, nroRel, false);
	}

	public InputStreamDownload imprimir() throws FileNotFoundException, JRException {
		return report.imprimir();
	}

	public Long getRegistroEstadualGeral() {
		return registroEstadualGeral;
	}

	public void setRegistroEstadualGeral(Long registroEstadualGeral) throws ParseException {
		this.registroEstadualGeral = registroEstadualGeral;
		report.adicionaValorReport("registroEstadualGeral", registroEstadualGeral);
	}

	public String getApelidoAlcunhas() {
		return apelidoAlcunhas;
	}

	public void setApelidoAlcunhas(String apelidoAlcunhas) throws ParseException {
		this.apelidoAlcunhas = apelidoAlcunhas;
		report.adicionaValorReport("apelidoAlcunhas", apelidoAlcunhas);
	}

	public String getNomeMae() {
		return nomeMae;
	}

	public void setNomeMae(String nomeMae) throws ParseException {
		this.nomeMae = nomeMae;
		report.adicionaValorReport("nomeMae", nomeMae);
	}

	public String getNaturalidade() {
		return naturalidade;
	}

	public void setNaturalidade(String naturalidade) throws ParseException {
		this.naturalidade = naturalidade;
		report.adicionaValorReport("naturalidade", naturalidade);
	}

}
